package com.cleaningcloud.erp.mapper;

import com.cleaningcloud.erp.domain.ErpCommodityUnit;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.math.BigDecimal;
import java.util.List;

/**
 * 商品单位Mapper接口
 *
 * @author cleaningcloud
 * @date 2024-09-28
 */
public interface ErpCommodityUnitMapper {
    /**
     * 查询商品单位
     *
     * @param commodityUnitId 商品单位主键
     * @return 商品单位
     */
    ErpCommodityUnit selectErpCommodityUnitByCommodityUnitId(Long commodityUnitId);

    /**
     * 查询商品单位列表
     *
     * @param erpCommodityUnit 商品单位
     * @return 商品单位集合
     */
    List<ErpCommodityUnit> selectErpCommodityUnitList(ErpCommodityUnit erpCommodityUnit);

    /**
     * 新增商品单位
     *
     * @param erpCommodityUnit 商品单位
     * @return 结果
     */
    int insertErpCommodityUnit(ErpCommodityUnit erpCommodityUnit);

    /**
     * 修改商品单位
     *
     * @param erpCommodityUnit 商品单位
     * @return 结果
     */
    int updateErpCommodityUnit(ErpCommodityUnit erpCommodityUnit);

    /**
     * 删除商品单位
     *
     * @param commodityUnitId 商品单位主键
     * @return 结果
     */
    int deleteErpCommodityUnitByCommodityUnitId(Long commodityUnitId);

    /**
     * 根据商品id删除商品单位
     *
     * @param commodityId 商品主键
     * @return 结果
     */
    @Delete("delete from erp_commodity_unit where commodity_id = #{commodityId}")
    int deleteErpCommodityUnitByCommodityId(@Param("commodityId") Long commodityId);

    /**
     * 批量删除商品单位
     *
     * @param commodityUnitIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteErpCommodityUnitByCommodityUnitIds(Long[] commodityUnitIds);


    /**
     * 批量新增
     *
     * @param list
     */
    void batchInsert(@Param("list") List<ErpCommodityUnit> list);

    /**
     * 修改库存商品成本价
     *
     * @param commodityId
     */
    @Update("update erp_commodity_unit set cost_price = #{costPrice} where commodity_id = #{commodityId} order by commodity_unit_id asc limit 1")
    int updateCostPriceByCommodityId(@Param("costPrice") BigDecimal costPrice, @Param("commodityId") Long commodityId);
}
